import {
  IApiGameEndReq,
  IApiGameEndRes,
  IApiGameStartReq,
  IApiGameStartRes,
  IApiPlayerJoinReq,
  IApiPlayerJoinRes,
  IApiPlayerListReq,
  IApiPlayerListRes,
  IApiRoomCreatReq,
  IApiRoomCreatRes,
  IApiRoomJoinReq,
  IApiRoomJoinRes,
  IApiRoomLeaveReq,
  IApiRoomLeaveRes,
  IApiRoomListReq,
  IApiRoomListRes,
} from './Api'
import { ApiMsgEnum } from './Enum'
import { IMsgClientSync, IMsgGameStart, IMsgPlayerList, IMsgRoom, IMsgRoomList, IMsgServerSync } from './Msg'

export interface IModel {
  api: {
    [ApiMsgEnum.ApiPlayerJoin]: {
      req: IApiPlayerJoinReq
      res: IApiPlayerJoinRes
    }
    [ApiMsgEnum.ApiPlayerList]: {
      req: IApiPlayerListReq
      res: IApiPlayerListRes
    }
    [ApiMsgEnum.ApiRoomCreate]: {
      req: IApiRoomCreatReq
      res: IApiRoomCreatRes
    }
    [ApiMsgEnum.ApiRoomList]: {
      req: IApiRoomListReq
      res: IApiRoomListRes
    }
    [ApiMsgEnum.ApiRoomJoin]: {
      req: IApiRoomJoinReq
      res: IApiRoomJoinRes
    }
    [ApiMsgEnum.ApiRoomLeave]: {
      req: IApiRoomLeaveRes
      res: IApiRoomLeaveReq
    }
    [ApiMsgEnum.ApiGameStart]: {
      req: IApiGameStartReq
      res: IApiGameStartRes
    }
    [ApiMsgEnum.ApiGameEnd]: {
      req: IApiGameEndReq
      res: IApiGameEndRes
    }
  }

  msg: {
    [ApiMsgEnum.MsgGameStart]: IMsgGameStart
    [ApiMsgEnum.MsgPlayerList]: IMsgPlayerList
    [ApiMsgEnum.MsgRoomList]: IMsgRoomList
    [ApiMsgEnum.MsgRoom]: IMsgRoom
    [ApiMsgEnum.MsgClientSync]: IMsgClientSync
    [ApiMsgEnum.MsgServerSync]: IMsgServerSync
  }
}
